#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

int f,r;
vector<int> v[5050],g[5050],st;
int father[5050];
bool ins[5050];
int low[5050],ord[5050],deg[5050];
int togi[5050],gi;
void init();
void dfs(int vs,int &cnt);
int tarjan();
void gdfs(int vs);
int main()
{
    while(cin>>f>>r)
    {
        int from,to;
        init();
        while(r--)
        {
            scanf("%d%d",&from,&to);
            v[from].push_back(to);
            v[to].push_back(from);
        }
        cout<<tarjan()<<endl;
    }
    return 0;
}
void init()
{
    for(int i=0;i<=f;i++)
    {
        v[i].clear();
        g[i].clear();
        ord[i]=-1;
        ins[i]=false;
        deg[i]=0;
        father[i]=-1;
    }
    st.clear();
    gi=0;
}
void dfs(int vs,int &cnt)
{
    ord[vs]=low[vs]=cnt++;
    st.push_back(vs);
    ins[vs]=true;
    for(int i=0,to;i<v[vs].size();i++)
    {
        to=v[vs][i];
        if(ord[to]==-1)
        {
            father[to]=vs;
            dfs(to,cnt);
            if(low[to]<low[vs])low[vs]=low[to];
        }
        else if(ins[to]&&father[vs]!=to&&ord[to]<low[vs])
        {
            low[vs]=ord[to];
        }
    }
    if(ord[vs]==low[vs])
    {
        while(!st.empty()&&ord[st.back()]>=ord[vs])
        {
            togi[st.back()]=gi;
            ins[st.back()]=false;
            st.pop_back();
        }
        gi++;
    }
}
int tarjan()
{
    int cnt=1,res;
    for(int i=1;i<=f;i++)if(ord[i]==-1)
    {
        dfs(i,cnt);
    }
    for(int i=1;i<=f;i++)
    {
        for(int j=0;j<v[i].size();j++)
        {
            if(togi[i]!=togi[v[i][j]])
            {
               g[togi[i]].push_back(togi[v[i][j]]);
               //cout<<togi[i]<<"->"<<togi[v[i][j]]<<endl;
            }
        }
    }
    gdfs(0);
    res=0;
    for(int i=0;i<gi;i++)
    {
      if(deg[i]==1)res++;
    }
    return (res+1)/2;
}
void gdfs(int vs)
{
    ins[vs]=true;
    for(int i=0;i<g[vs].size();i++)if(!ins[g[vs][i]])
    {
        deg[vs]++;
        deg[g[vs][i]]++;
        gdfs(g[vs][i]);
    }
}
